﻿/*
 * Created by SharpDevelop.
 * User: Renzo
 * Date: 05/10/2011
 * Time: 02:38 a.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Drawing;
using System.Windows.Forms;
using Business_Logic;
using System.Collections.Generic;
using Business_Entity;

namespace PetSoft.GUI.GestRecursos
{
	/// <summary>
	/// Description of Form1.
	/// </summary>
	public partial class GUIDespachoPrinc : Form
	{
		public GUIDespachoPrinc()
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			this.prodPedDetBTN.Enabled = false;
                
            for (int i=0;i<BLInfo.usuarioActual.Rol.Privilegio.Count;i++){
                if ((new BLPrivilegio()).existePrivilegio(2,"GREC","DESP",BLInfo.UsuarioActual.Rol.Privilegio)){
                    this.prodPedDetBTN.Enabled = true;
                }                
            }
			this.Load += new EventHandler(DespachoPrinc_Load);
			//this.prodPedDetBTN.Click+= new EventHandler(btnProd_Det);
			this.prodPedCancBTN.Click+= new EventHandler(btnProd_Canc);
			this.listProdTBL.DoubleClick += new EventHandler(doble_click);
			this.listProdTBL.CellEnter += new DataGridViewCellEventHandler(GUIDespachoPrinc_CellEnter);
			//
			// TODO: Add constructor code after the InitializeComponent() call.
			//
		}
		
		private void doble_click(object sender, EventArgs e){
			int aux = this.listProdTBL.CurrentRow.Index;
			if((bool)this.listProdTBL[0,aux].Value == true){
				this.listProdTBL[0,aux].Value = false;
			}
			else{
				this.listProdTBL[0,aux].Value = true;
			}
		}
		
		private void GUIDespachoPrinc_CellEnter(object sender, EventArgs e){
			this.codPedValLBL.Text = this.listProdTBL[1, this.listProdTBL.CurrentRow.Index].Value.ToString();
			this.fecPedValLBL.Text = this.listProdTBL[3, this.listProdTBL.CurrentRow.Index].Value.ToString();
			this.tienPedValLBL.Text = this.listProdTBL[2, this.listProdTBL.CurrentRow.Index].Value.ToString();
		}
		
		private void DespachoPrinc_Load(object sender, EventArgs s){
			cargaTabla();
			
		}
		
		public void cargaTabla(){
			BLPedidoAbastecimiento ped = new BLPedidoAbastecimiento();
			List<BEPedidoAbastecimiento> lista = new List<BEPedidoAbastecimiento>();
			lista = ped.getAllPedidos();
			this.listProdTBL.Rows.Clear();
			foreach (BEPedidoAbastecimiento p in lista) {
				//String[] fila = {};
				this.listProdTBL.Rows.Add(false, "" + p.Codigo, "" + p.Tienda.Nombre, "" + p.Fecha.ToShortDateString(), "" + p.Estado.Descripcion);
			}
		}
		/*
		public void btnProd_Det(Object e, EventArgs s){
			GUIDespachoProd vent = new GUIDespachoProd();
			vent.Show();
		}*/
		public void btnProd_Canc(Object e, EventArgs s){
			this.Close();
		}
		public void llenaTabla(){
			/*String [] fila0 = {"00001","Local 1","06/10/2011","Solicitado"};
			String [] fila1 = {"00002","Local 2","15/09/2011","Solicitado"};
			this.listProdTBL.Rows.Add(fila0);
			this.listProdTBL.Rows.Add(fila1);*/
		}
		
		
		void ProdPedCancBTNClick(object sender, EventArgs e)
		{
			this.Close();
		}
		
		void ListProdTBLCellContentClick(object sender, DataGridViewCellEventArgs e)
		{
			int codPed = Int32.Parse(this.listProdTBL[1, this.listProdTBL.CurrentRow.Index].Value.ToString());
			BLPedidoAbastecimiento pedido = new BLPedidoAbastecimiento();
			BEPedidoAbastecimiento ped;
			ped = pedido.getPedidoByCod(codPed);
			/*GUIDetallesPedAbast ventDetalle = new GUIDetallesPedAbast(ped);
			ventDetalle.Show();*/
			int aux = this.listProdTBL.CurrentRow.Index;
			if(((bool) this.listProdTBL[0,aux].Value) == true){
				this.listProdTBL[0, aux].Value = false;
			}
			else{
				this.listProdTBL[0, aux].Value = true;
			}
			try{
				this.codPedValLBL.Text = "" + ped.Codigo;
				this.fecPedValLBL.Text = "" + ped.Fecha;
				this.tienPedValLBL.Text = "" + ped.Tienda.Nombre;
			}
			catch{
				Utils.MessageError("Se presentó un error en el sistema.",null);
			}
			
		}
		
		void ProdPedDetBTNClick(object sender, EventArgs e)
		{
			int index=0, contAux=0, cont=0;
			foreach (DataGridViewRow fila in this.listProdTBL.Rows) {
				if(fila.Cells[0].Value != null && (bool)fila.Cells[0].Value){
        			index = contAux;
        			cont++;
        		}      		
        		contAux++;
			}		
			if(cont==0){
				Utils.MessageAviso("Debe seleccionar algún pedido para despachar.",null);
			}
			if(cont>1){
				Utils.MessageAviso("Debe seleccionar solo 1 pedido para despachar.");
			}
			if(cont==1){
				BLPedidoAbastecimiento blped = new BLPedidoAbastecimiento();
				List<BELineaPedidoAbastecimiento> detallePed = new List<BELineaPedidoAbastecimiento>();
				List<BELineaPedidoAbastecimiento> detallePedFinal = new List<BELineaPedidoAbastecimiento>();
				//se obtiene el código del pedido seleccionado			
	        	//try{
	        		BLPedidoAbastecimiento bPed = new BLPedidoAbastecimiento();
	        		int aux = Int32.Parse(this.listProdTBL[1, this.listProdTBL.CurrentRow.Index].Value.ToString());
	        		BEPedidoAbastecimiento ped = blped.getPedidoByCod(aux);
				   // MessageBox.Show("" + ped.Codigo);
				    //obtiene el detalle del pedido ingresado por código
				    detallePed = blped.getDetalleByCod(ped.Codigo);
				    BLProveedor prov = new BLProveedor();
				    BLProducto blProd = new BLProducto();
				    foreach (BELineaPedidoAbastecimiento linea in detallePed) {
				    	BEProveedor pr = blProd.getProveedorByCod(linea.Proveedor.IdProv);
				    	//MessageBox.Show("Detallesfdasdfd:" + linea.Proveedor.IdProv);
				    	linea.Proveedor = pr;
				    	List<BEProducto> pd = blProd.getProductoByCod(linea.Producto.Codigo);
				    	linea.Producto = pd[0];
				    	detallePedFinal.Add(linea);
				    }
				    //BEProveedor p = prov.BuscarProveedor(1);
				    //MessageBox.Show("Detalles:" + p.RazonSocial);
				    ped.Detalle = detallePedFinal;
				   // MessageBox.Show("Detalles:" + ped.Detalle.Count);
				   GUIDespachoProd despacho = new GUIDespachoProd(ped);
				   despacho.ShowDialog();  		
				   cargaTabla();
	        	//} 
	        	//catch{
	        	//	MessageBox.Show("Debe seleccionar algún pedido para poder despachar.");
				//}
			}
		}
		
		void CheckBox1CheckedChanged(object sender, EventArgs e)
		{
			for(int i=0; i<this.listProdTBL.RowCount; i++){
        		this.listProdTBL[0, i].Value = this.selCBCOL.Checked;
				//list[0, i].Value = ((CheckBox) list.Controls.Find("checkboxHeader", true)[0]).Checked;    		
        	}
		}
	}
}
